package 单例;
/*
懒汉式:1.私有构造方法
       2.《私有静态变量》
       3.《静态锁对象Object》
       4.公共静态方法，需要返回对象；同步锁+if判断
 */
public class TestSingle2 {
    public static void main(String[] args) {
        //Single2 single2 = new Single2();
        //获取对象；类名.getSingle2()
        Single2 single1 = Single2.getSingle2();
        Single2 single2 = Single2.getSingle2();
        System.out.println(single1==single2);
    }
}
class Single2{//类名==引用类型
    private Single2(){//1.构造方法私有话

    }
   private  static  Single2 single2;//引用类型变量私有化+加static可以使用类名调用
    static   Object o =  new Object();//手动创建锁对象，需设置静态，静态才能调用静态

  synchronized   public  static  Single2 getSingle2() {//锁方法+公共静态方法，外界访问途径
        synchronized (o) {//锁格式：synchronized同步锁+if判断

            //判断
            if (single2 == null) {
                single2 = new Single2();//没对象创建对象，并赋值给single2
            }
            return single2;//返回对象
        }
    }
}